class GoogleSuggest
  class Region
    GOOGLE_HOSTS = { # :nodoc:
      ac: 'www.google.ac',
      ad: 'www.google.ad',
      ae: 'www.google.ae',
      af: 'www.google.com.af',
      ag: 'www.google.com.ag',
      ag: 'www.google.com.ag',
      ai: 'www.google.com.ai',
      al: 'www.google.al',
      am: 'www.google.am',
      ao: 'www.google.am',
      ar: 'www.google.com.ar',
      as: 'www.google.as',
      at: 'www.google.at',
      au: 'www.google.com.au',
      az: 'www.google.az',
      ba: 'www.google.ga',
      bd: 'www.google.com.bd',
      be: 'www.google.be',
      bf: 'www.google.bf',
      bg: 'www.google.bg',
      bh: 'www.google.com.bh',
      bi: 'www.google.bi',
      bj: 'www.google.bj',
      bn: 'www.google.com.bn',
      bo: 'www.google.com.bo',
      br: 'www.google.com.br',
      bs: 'www.google.bs',
      bt: 'www.google.bt',
      bw: 'www.google.co.bw',
      by: 'www.google.by',
      bz: 'www.google.com.bz',
      ca: 'www.google.ca',
      kh: 'www.google.com.kh',
      cc: 'www.google.cc',
      cd: 'www.google.cd',
      cf: 'www.google.cf',
      cat: 'www.google.cat',
      cg: 'www.google.cg',
      ch: 'www.google.ch',
      ci: 'www.google.ci',
      ck: 'www.google.co.ck',
      cl: 'www.google.cl',
      cm: 'www.google.cm',
      cn: 'www.google.cn',
      co: 'www.google.com.co',
      cr: 'www.google.co.cr',
      cu: 'www.google.com.cu',
      cv: 'www.google.cv',
      cy: 'www.google.com.cy',
      cz: 'www.google.cz',
      de: 'www.google.de',
      dj: 'www.google.dj',
      dk: 'www.google.dk',
      dm: 'www.google.dm',
      do: 'www.google.com.do',
      dz: 'www.google.dz',
      ec: 'www.google.com.ec',
      ee: 'www.google.ee',
      eg: 'www.google.com.eg',
      es: 'www.google.es',
      et: 'www.google.com.et',
      fi: 'www.google.fi',
      fj: 'www.google.com.fj',
      fm: 'www.google.fm',
      fr: 'www.google.fr',
      ga: 'www.google.ga',
      ge: 'www.google.ge',
      gf: 'www.google.gf',
      gg: 'www.google.gg',
      gh: 'www.google.com.gh',
      gi: 'www.google.com.gi',
      gl: 'www.google.gl',
      gm: 'www.google.gm',
      gp: 'www.google.gp',
      gr: 'www.google.gr',
      gt: 'www.google.com.gt',
      gy: 'www.google.gy',
      hk: 'www.google.com.hk',
      hn: 'www.google.hn',
      hr: 'www.google.hr',
      ht: 'www.google.ht',
      hu: 'www.google.hu',
      id: 'www.google.co.id',
      iq: 'www.google.iq',
      ie: 'www.google.ie',
      il: 'www.google.co.il',
      im: 'www.google.im',
      in: 'www.google.co.in',
      io: 'www.google.io',
      is: 'www.google.is',
      it: 'www.google.it',
      je: 'www.google.je',
      jm: 'www.google.com.jm',
      jo: 'www.google.jo',
      jp: 'www.google.co.jp',
      ke: 'www.google.co.ke',
      ki: 'www.google.ki',
      kg: 'www.google.kg',
      kr: 'www.google.co.kr',
      kw: 'www.google.com.kw',
      kz: 'www.google.kz',
      la: 'www.google.la',
      lb: 'www.google.com.lb',
      lc: 'www.google.com.lc',
      li: 'www.google.li',
      lk: 'www.google.lk',
      ls: 'www.google.co.ls',
      lt: 'www.google.lt',
      lu: 'www.google.lu',
      lv: 'www.google.lv',
      ly: 'www.google.com.ly',
      ma: 'www.google.co.ma',
      md: 'www.google.md',
      me: 'www.google.me',
      mg: 'www.google.mg',
      mk: 'www.google.mk',
      ml: 'www.google.ml',
      mm: 'www.google.com.mm',
      mn: 'www.google.mn',
      ms: 'www.google.ms',
      mt: 'www.google.com.mt',
      mu: 'www.google.mu',
      mv: 'www.google.mv',
      mz: 'www.google.co.mz',
      na: 'www.google.com.na',
      ne: 'www.google.ne',
      nf: 'www.google.com.nf',
      ng: 'www.google.com.ng',
      ni: 'www.google.com.ni',
      nl: 'www.google.nl',
      no: 'www.google.no',
      np: 'www.google.com.np',
      nr: 'www.google.nr',
      nu: 'www.google.nu',
      nz: 'www.google.co.nz',
      om: 'www.google.com.om',
      pk: 'www.google.com.pk',
      pa: 'www.google.com.pa',
      pe: 'www.google.com.pe',
      ph: 'www.google.com.ph',
      pl: 'www.google.pl',
      pg: 'www.google.com.pg',
      pn: 'www.google.pn',
      pr: 'www.google.com.pr',
      ps: 'www.google.ps',
      pt: 'www.google.pt',
      py: 'www.google.com.py',
      qa: 'www.google.com.qa',
      ro: 'www.google.ro',
      rs: 'www.google.rs',
      ru: 'www.google.ru',
      rw: 'www.google.rw',
      sa: 'www.google.com.sa',
      sb: 'www.google.com.sb',
      sc: 'www.google.sc',
      se: 'www.google.se',
      sg: 'www.google.com.sg',
      sh: 'www.google.sh',
      si: 'www.google.si',
      sk: 'www.google.sk',
      sl: 'www.google.sl',
      sn: 'www.google.sn',
      sm: 'www.google.sm',
      so: 'www.google.so',
      st: 'www.google.st',
      sr: 'www.google.sr',
      sv: 'www.google.com.sv',
      td: 'www.google.td',
      tg: 'www.google.tg',
      th: 'www.google.co.th',
      tj: 'www.google.com.tj',
      tk: 'www.google.tk',
      tl: 'www.google.tl',
      tm: 'www.google.tm',
      to: 'www.google.to',
      tn: 'www.google.tn',
      tr: 'www.google.com.tr',
      tt: 'www.google.tt',
      tw: 'www.google.com.tw',
      tz: 'www.google.co.tz',
      ua: 'www.google.com.ua',
      ug: 'www.google.co.ug',
      uk: 'www.google.co.uk',
      com: 'www.google.com',
      uy: 'www.google.com.uy',
      uz: 'www.google.co.uz',
      vc: 'www.google.com.vc',
      ve: 'www.google.co.ve',
      vg: 'www.google.vg',
      vi: 'www.google.co.vi',
      vn: 'www.google.com.vn',
      vu: 'www.google.vu',
      ws: 'www.google.ws',
      za: 'www.google.co.za',
      zm: 'www.google.co.zm',
      zw: 'www.google.co.zw'
    }.freeze

    def self.host_for(region_code=nil)
      region_code = region_code.to_sym if region_code.is_a?(String)
      GOOGLE_HOSTS[region_code] || GOOGLE_HOSTS[:com]
    end

    def self.codes
      GOOGLE_HOSTS.keys
    end
  end
end
